package com.molichuxing.services.business.dto.response;

import com.molichuxing.framework.dto.ResponseRootDto;
import com.molichuxing.services.property.CarInsuranceTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 交强险实体
 * </p>
 *
 * @author 
 * @since 2019-08-14
 */
@Data
public class CarInsuranceDto extends ResponseRootDto {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Integer insuranceId;

    /**
     * 保单号
     */
    private String code;

    /**
     * 车辆id
     */
    private Integer carId;

    /**
     * 保险类别：1-交强险，2-商业险
     */
    private Integer type;

    /**
     * 保险类别：1-交强险，2-商业险
     */
    private String typeStr;


    /**
     * 车架号
     */
    private String vin;

    /**
     * 牌照号
     */
    private String licencePlate;

    /**
     * 车型id
     */
    private Integer vehicleId;

    /**
     * 保险公司id
     */
    private Integer insuranceCompanyId;

    /**
     * 保险费
     */
    private BigDecimal cost;

    /**
     * 保额费
     */
    private BigDecimal amount;




    /**
     * 投保时间
     */
    private LocalDateTime insureTime;

    /**
     * 起保时间
     */
    private LocalDateTime beginTime;

    /**
     * 保险到期时间
     */
    private LocalDateTime endTime;

    /**
     * 投保人
     */
    private String policyHolder;

    /**
     * 保单URL
     */
    private String insureProve;

    /**
     * 保单图片URL
     */
    private String insureProveImg;

    /**
     * 是否有效 true有效，false无效
     */
    private Boolean isValid;

    /**
     * 保单状态 0：全部保单，1：在保保单，2：过保保单 3, 未生效保单
     */
    private Integer status;

    /**
     * 保单状态 0：全部保单，1：在保保单，2：过保保单 3, 未生效保单
     */
    private String statusStr;

    public void setType(Integer type) {
        this.type = type;
        this.typeStr = CarInsuranceTypeEnum.getName(type);
    }

    public void setBeginTime(LocalDateTime beginTime) {
        this.beginTime = beginTime;
        if(beginTime.isAfter(LocalDateTime.now())) {
            this.isValid = true;
        }else {
            this.isValid = false;
        }
    }
}
